The present invention is directed generally to systems and methods for data process control in computing systems and specifically to systems and methods for recording the state of queues of data entities.
In data processing control and computing systems, a source of messages generates data messages which must be transmitted to a plurality of destinations. A representative architecture includes a plurality of message servers, a plurality of servers, and a plurality of client processors. The message servers accept calls from users, take messages from the users, and attempt to deliver those messages. Each message-creation call into a message server results in one or more LAN message(s) being sent to one or more servers which update a message status record for the message being delivered. A filter filters the messages and places the filtered messages in a queue. The various messages in the queue are each transmitted to various destinations such as one or more client processors. A message is cleared from the queue only after all pertinent destinations have received the message. Read and acknowledge pointers are maintained by the application processors to avoid repeated transmission of a data entity to any destination. The client processor(s) perform backup/recovery operations of software and data, collect data on each message, store the data in a database, and provide a simple user interface for filtering and viewing records.
Although the data in the client processor can be backed up readily and the data restored from the backup tape, data collection by the client processor must resume at the point in the queue where the backup tape was made and not at the point in the queue where data collection last ended (due, for example, to the backup operation itself or a catastrophic system failure). Otherwise, the application processors and client processors would be operating asynchronously. Accordingly, there is a need for a system and methodology for recording the state of the read queue when the backup operation was performed to permit subsequent restoration of the queue from the backup tape.
The present invention solves the above problem and represents a significant advance over the prior art. In one embodiment, a method is provided for recording the state of a queue containing a plurality of data entities for purposes of reconstructing or restoring the queue (and its related administration parameters) and synchronizing the processing of the queue by the client and server. The method includes the steps of:
(a) updating, at a first frequency, one or more administration parameters of the queue (e.g., a read, write, examination, and/or acknowledge pointer) and/or the queue itself to avoid repeated transmission of a data entity (e.g., a message) to a given destination; and
(b) updating, at a second frequency (less than or equal to the first frequency), one or more backup administration parameter(s) of the queue (such as by copying an administration parameter or the queue itself to form a virtual queue). The backup administration parameter(s) record the state of the queue (such as when a backup operation is performed). As used herein, a xe2x80x9cpointerxe2x80x9d is a data element that indicates the location of another data element or an identifier that indicates the location of an item of data. Thus, a pointer is typically a data address that tells where to find a desired item. The backup parameters and/or virtual queue permit the client to restart data collection at the appropriate point in the transaction (data) stream after a recover operation has restored its state.
By way of example, read and/or acknowledge pointers are typically updated by the server frequently (e.g., the read pointer is updated for every data item and the acknowledge pointer is updated periodically (e.g., every minute)) during processing of the data entities to permit the processor to progress systematically and efficiently through the queue. Although the parameters are maintained at the server, they are controlled by the client. In contrast, the backup read and/or acknowledge pointers and virtual queue are typically recorded, or updated, in a backup operation infrequently (e.g., daily or even more infrequently).
In one configuration, the backup parameter(s) are indicative of, derived from, and/or correspond to an administration parameter associated with the queue (e.g., a backup acknowledge pointer is derived from an acknowledge pointer associated with the queue). The administration parameter in the updating step (a) typically has a current value while the corresponding backup read and/or acknowledge parameter in the virtual queue has a historic value of (i.e., a value previously assigned to) the administration parameter in the updating step (a). The current value thus typically differs from the historic value during processing of the queue.
In the event of a malfunction of the server and/or client, the administration parameter(s) in the server are reset to match the backup administration parameter(s) and data processing is reinitiated with the server and client operating synchronously. As will be appreciated, the data entities are typically backed up or recorded in a computational component (e.g., a tape) separate from a computational component (e.g., a hard drive) containing the queue.
To conserve computational resources and increase system efficiency, the method can precede steps (a) and (b) above with the step of filtering a second plurality of data entries to form the plurality of data entries. Each of the plurality of data entries is contained in the second plurality of data entries along with additional information.
To permit the backup administration parameter(s) and/or virtual queue to be paired with the pertinent client in a network architecture having multiple clients and multiple backup administration parameter(s) or virtual queues, each of which corresponds to one of the clients, a unique identifier or address (e.g., an address of a backup pointer corresponding to a client, a code corresponding to a client, etc.) can be used to permit the backup administration parameter(s) and/or virtual queue to be associated with its respective client. In one configuration, the backup pointer address is stored on a corresponding client backup tape and the code on the server along with the backup administration parameters associated with the corresponding client. This permits the pertinent backup tape to be used to restore a client and eliminates the need to simultaneously backup all of the clients.
In another embodiment, a system for recording the state of a queue containing a plurality of data entities is provided. The system includes:
(a) first means for updating at least one administration parameter of a queue (and/or the queue itself) to avoid repeated transmission of a data entity to a given destination; and
(b) second means for updating at least one backup administration parameter of the queue and/or a virtual queue associated with the backup parameter.
In yet another embodiment, another system for recording the state of a queue containing a plurality of data entities is provided. The system includes the following components:
(a) a server including:
(i) one or more server processors for processing a plurality of first data entities;
(ii) a server database for storing information received from the one or more processors;
(iii) a server queue including at least some of the plurality of first data entities; and
(iv) at least one administration parameter associated with the queue, the at least one administration parameter having a current value;
(b) a client in communication with the server and including:
(i) a queue process reader for reading the data entities in the queue; and
(ii) a client database for receiving and storing the data entities in the queue read by the queue process reader; and
(c) a set of backup administration parameter(s) maintained and/or controlled using information from at least one of the client and server.
In another embodiment, a system and method for clearing information in a queue of a first server before writing new information to a queue of a second server is provided. This embodiment is particularly useful where a switch is made between a first and second server such that the formerly passive (or second) server is redesignated as the active server and the formerly active (or first) server is redesignated as the passive server. In the embodiment, a timing indicator is provided to the second server to delay writing new information to its queue for a predetermined time period. The predetermined time period is sufficient for the first server to process fully the information in its queue. If the timing indicator is not received or a different timing indicator is received by the second server, new information is written immediately to the queue of the second server. This configuration permits hard or soft mode switches between the servers without loss of queued data entities in either server.